﻿#region Creditos

/* Autor: Edilberto Sánchez Forero	*/
/* Email: esanchezfo@gmail.com		*/
/* Licencia: LGPL, Software Libre	*/
/* País: Colombia, Bogotá			*/

#endregion

#region Librerias

using System;
using System.Text;

#endregion


namespace ESF.Data
{
	public static class DbSql
	{
		#region Funciones para generar cadenas

		public static string GenerateIN (params byte [] pbytValores)
		{
			object [] pobjValores;


			pobjValores = new object [pbytValores.Length];

			Array.Copy (pbytValores, pobjValores, pbytValores.Length);

			return GenerarIN (false, pobjValores);
		}


		public static string GenerateIN (params ushort [] pshrValores)
		{
			object [] pobjValores;


			pobjValores = new object [pshrValores.Length];

			Array.Copy (pshrValores, pobjValores, pshrValores.Length);

			return GenerarIN (false, pobjValores);
		}
		

		public static string GenerateIN (params uint [] pintValores)
		{
			object [] pobjValores;
			
			
			pobjValores = new object [pintValores.Length];
			
			Array.Copy (pintValores, pobjValores, pintValores.Length);

			return GenerarIN (false, pobjValores);
		}
		

		public static string GenerarINCadena (params string [] pstrValores)
		{
			return GenerarIN (true, pstrValores);
		}


		private static string GenerarIN (bool pblnEsCadena, object [] pobjValores)
		{
			int intI;
			
			StringBuilder stbResultado;
			
			
			if (pobjValores.Length == 0) { return string.Empty; }
			
			stbResultado = new StringBuilder ();
		
			stbResultado.Append (pobjValores [0]);
		
			for (intI = 1; intI < pobjValores.Length; intI ++)
			{
				if (pblnEsCadena)
				{
					stbResultado.AppendFormat (",'{0}'", pobjValores [intI].ToString ().Replace ("'", "\'"));
				}
				else
				{
					stbResultado.AppendFormat (",{0}", pobjValores [intI].ToString ());
				}
			}
			
			return stbResultado.ToString ();
		}

		#endregion
	}
}
